/* <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) 2011  Joseph Luccisano

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
package org.lucciframework.validator.core {
    
	
	import mx.core.UIComponent;
    import mx.events.ValidationResultEvent;

    public class AbstractValidator {

        private var _dataToValidate : *;

		[Inspectable(defaultValue="true")]
        private var _required : Boolean = true;

		[InstanceType("mx.core.UIComponent")]
        private var _target : UIComponent;

        private var _validationResultEventArray : Array;

        private var _validationResultEvent : ValidationResultEvent;

        [Bindable] public function get dataToValidate() : * {
            return _dataToValidate;
        }

        public function set dataToValidate(value : *) : void {
            _dataToValidate = value;
        }

        [Bindable] public function get target() : UIComponent {
            return _target;
        }

		/**
		 * Set the target of component. The component must extends to UIComponent
		 */
        public function set target(value : UIComponent) : void {
            _target = value;
        }


	
        [Bindable] public function get required() : Boolean {
            return _required;
        }

        public function set required(value : Boolean) : void {
            _required = value;
        }

        [Bindable] public function get validationResultEventArray() : Array {
            return _validationResultEventArray;
        }

        public function set validationResultEventArray(value : Array) : void {
            _validationResultEventArray = value;
        }

        [Bindable] public function get validationResultEvent() : ValidationResultEvent {
            return _validationResultEvent;
        }

        public function set validationResultEvent(value : ValidationResultEvent) : void {
            _validationResultEvent = value;
        }

        /**
         * @private
         */
        public function validate() : void {}


    }
}